39 research outputs found

    Digital Scholarship: Applying Digital Tools to Undergraduate Student Research Papers, A Proposal for a Freshman Seminar. Part I: Definition of Student Research Methodology

    Full text link
    There are many digital tools that can be used for research and presentation in nearly every college discipline, including the social sciences and humanities. These tools hold the promise to radically change both the process and products of research. But in their application these tools have failed miserably to live up to their promise. This paper is based on the hypothesis that one reason these tools do reach their potential is that there is no systemic way to include them in research process, resulting in the tools being seen as ways to improve the final research product. This results in the tools becoming just an added on kludge, and leading researchers to the conclude that they are hard to use, full of bugs and other problems, and that they do not bring a lot of value to the research. This paper is an attempt to address this problem of including digital tools in a research process. It is part of a series of papers proposing a systematic methodology for including digital tools in a research process. This paper is the first, and outlines a methodology for the research process that allows the application of digital tools to a small area, undergraduate student research papers. It will outline a development process that will systematize the steps in the research process. These steps will then be used to classify the digital tools, and show how they can be applied to the research process. The final product of this paper will be a process methodology for creating student research papers to be used in a class to be run as a freshman seminar. The students will be taught this research methodology, and be led through the development of a research paper using the steps defined in this methodology. The steps in the process being enhanced using appropriate digital tools applicable to each step in the methodology. The ability of the students to do research using the research methodology and digital tools will be measured by the degree of success the students have in completing a humanities/social science research product as part of the class. The students will be followed in a longitudinal study by asking them to complete a short survey at the end of each year of their undergraduate education

    Implementing a One Address CPU in Logisim

    Get PDF
    Most computer users have an incorrect, but useful, cognitive metaphor for computers in which the user says (or types or clicks) something and a mystical, almost intelligent or magical, behavior happens. It is not a stretch to describe computer users as believing computers follow the laws of magic, where some magic incantation is entered, and the computer responds with an expected, but magical, behavior. This magic computer does not actually exist. In reality computer are machines, and every action a computer performs reduces to a set of mechanical operations. In fact the first complete definition of a working computer was a mechanical machine designed by Charles Babbage in 1834, and would have run on steam power. Probably the biggest success of Computer Science (CS) in the 20th century was the development of abstractions that hide the mechanical nature of computers. The fact that average people use computers without ever considering that they are mechanistic is a triumph of CS designers. This purpose of this monograph is to break the abstract understanding of a computer, and to explain a computer’s behavior in completely in mechanistic terms. It will deal specifically with the Central Processing Unit (CPU) of the computer, as this is where the magic happens. All other parts of a computer can be seen as just providing information for the CPU to operate on. This monograph will deal with a specific type of CPU, a one-address CPU, and will explain this CPU using only standard gates, specifically AND, OR, NOT, NAND and XOR gates, and 4 basic Integrated Circuits (ICs), the Decoder, Multiplexer, Adder, and Flip Flop. All of these gates and components can be described as mechanical transformations of input data to output data, and the overall CPU can then be seen as a mechanical device.https://cupola.gettysburg.edu/oer/1002/thumbnail.jp

    Visualizing Fantasy Fiction: Design of a Class in Digital Scholarship and Visualization, including Research, Organization and Digital Visualization, that Does Not Require Programming or IT support

    Full text link
    This paper outlines a course to integrate digital visualizations into undergraduate research. These visualizations will include mapping and timelines of events, and the ability to hyperlink the events, characters, and story lines in a fantasy fiction story such as Lord of the Rings or A Game of Thrones. The digital scholarship will involve the methodology for collecting, organizing, and representing the data for the visualizations. The topic for the visualizations in this paper is fantasy fiction; however the methods to develop these visualizations will be applicable to many academic disciplines, including the humanities and social sciences. The paper outlines the justification for this class, the appropriate audience for this class, and the tools needed. Types of projects and homework assignments to implement the visualizations are suggested. It concludes with a syllabus outlining a typical schedule for this class

    Programming Safety Tips: Why You Should Use Immutable Objects or How to create programs with bugs that can never be found or fixed.

    Get PDF
    Program safety deals with how to make programs as error free as possible. The hardest errors in a program for a programmer to find are often errors in using memory. There are two reasons for this. The first is that errors in accessing memory almost never show problems in the proximate area of the program where the error is made. The error has no apparent impact when it is made, but often causes catastrophic results to occur much later in the program, in areas of the program unrelated to memory error that caused it. The second reason memory errors are so difficult to find is that the working of memory is often poorly understood by most novice, and many professional, programmers. This makes it difficult for many programmers to even understand why an action causes the error. This article will show an example of a program error that can easily occur when memory access is poorly understood. This leads to program errors that are very easy to fix when they are found, but extremely difficult to find. The article will then explain how many memory errors can be easily avoided by following the very simple rule, “Make all object immutable unless there is a good reason to make them mutable”, and why immutable objects are an essential tool in good, safe programming practice

    Digital Circuit Projects: An Overview of Digital Circuits Through Implementing Integrated Circuits - Second Edition

    Get PDF
    Digital circuits, often called Integrated Circuits or ICs, are the central building blocks of a Central Processing Unit (CPU). To understand how a computer works, it is essential to understand the digital circuits which make up the CPU. This text introduces the most important of these digital circuits; adders, decoders, multiplexers, D flip-flops, and simple state machines. What makes this textbook unique is that it puts the ability to understand these circuits into the hands of anyone, from hobbyists to students studying Computer Science. This text is designed to teach digital circuits using simple projects the reader can implement. But unlike most lab manuals used in classes in Digital Circuits or Computer Organization classes, this textbook is designed to remove the barrier of a laboratory infrastructure needed in a face-to-face environment at a college or university. This textbook is designed to be used by the reader to create the circuits in their own homes. The textbook is free. The cost of the kits needed to do the labs is reasonable. And the projects are well documented and can be implemented by even novices to electronic projects. This text allows professors to add laboratory projects in digital circuits to students in online classes in Computer Organization. This enhances these classes with interesting and fun exercises that reinforce the classroom topics. This text can also be used by a hobbyist who wants to learn more about digital circuits and how computers work. The material is presented at a level that someone with no experience in digital circuits and electronics can successfully complete the projects, and gain an understanding of the circuits which go into making up a computer. The second edition of this includes a chapter on Boolean Algebra for professors who would like to include a more formal background into digital circuits. It also changed the chapter designed to give a context for the CPU to reference a relatively simple CPU developed by the author in Logisim. For someone who is interested in digital circuits, this book is worth downloading. Note: Often it is easier to use a MS Word file rather than a pdf file. If you would like the book as a Word document and not a pdf, please contact the author at ckann(at)gettysburg.edu, and he will mail it to you. The main reason for this is to get some sort of feedback on who is using the text.https://cupola.gettysburg.edu/oer/1000/thumbnail.jp

    Introduction to Assembly Language Programming: From Soup to Nuts: ARM Edition

    Get PDF
    This is an ARM Assembly Language Textbook designed to be used in classes such as Computer Organization, Operating Systems, Compilers, or any other class that needs to provide the students with a overall of Arm Assembly Language. As with all Soup to Nuts books, it is intended to be a resource where each chapter builds on the material from previous chapters, and leads the reader from a rudimentary knowledge of assembly language to a point where they can use it in their studies.https://cupola.gettysburg.edu/oer/1007/thumbnail.jp

    The Digital Musing of a History Buff

    Full text link
    Perhaps the best part of studying Computer Science (CS) is that it is not an isolated discipline; CS exists to produce systems and applications that support the business and interests of nearly every person in the world. Any area of inquiry is open to fanciful and meaningful exploration by computer scientists. In a very real sense, the world is the oyster of those who can use digital tools developed by CS. In his talk, Dr. Kann will explore how he uses those digital tools to advance his enthusiasm for history. The talk will highlight some of the work he has done with students on digital representations of interest to both CS students and others who are history buffs. While the range of applications he has worked on is much more extensive, here he will largely focus on map applications. Dr. Kann will also talk about basic digital tools, such as image maps, that can be used by people without a CS background. For example, he\u27ll share how easy it is to create tools such as http://270towin.com , and show how they could be applied to areas such as political science (polling maps), health science (epidemiology), sociology (networks), etc. By giving this talk, Professor Kann hopes to excite those students who might be interested in doing a research topic in digital applications. While mainly geared towards CS students, hopefully students or faculty from other disciplines will see a connection and pair with CS students to develop applications of mutual interest. [event description

    Methodology for Creating Digital Scholarship Projects

    Full text link
    Colloquium talk describing a methodology for creating Digital Scholarship projects

    Introduction To MIPS Assembly Language Programming

    Get PDF
    This book was written to introduce students to assembly language programming in MIPS. As with all assembly language programming texts, it covers basic operators and instructions, subprogram calling, loading and storing memory, program control, and the conversion of the assembly language program into machine code. However this book was not written simply as a book on assembly language programming. The larger purpose of this text is to show how concepts in Higher Level Languages (HLL), such as Java or C/C++, are represented in assembly. By showing how program constructs from these HLL map into assembly, the concepts will be easier to understand and use when the programmer implements programs in languages like Java or C/C++. Concepts such as references and variables, registers, binary and Boolean operations, subprogram execution, memory types (heap, stack, and static), and array processing are covered to clarify the decisions made when implementing HLL. Program control is presented using a mapping from structured programs in pseudo code to help students understand structured programming, and why it exists. Memory access in assembly is presented to high light the difference between references (pointers) and values, and how these impact HLL. This book has numerous code examples, and many problems at the end of each chapter, and it is appropriate for a class in Assembly Language, or as a extra resource for a class in Computer Organization.https://cupola.gettysburg.edu/oer/1001/thumbnail.jp

    Programming for the Web: From Soup to Nuts: Implementing a complete GIS web page using HTML5, CSS, JavaScript, Node.js, MongoDB, and Open Layers.

    Get PDF
    This book is designed to be used as a class text but should be easily accessible to programmers interested in Web Programming. It should even be accessible to an advanced hobbyist. The original goal behind this text was to help students doing research with me in Web based mapping applications, generally using Open Layers. The idea was to provide persistent storage using REST and simple http request from JavaScript to store the data on a server. When teaching this class, I became painfully aware of just how little students know about Web Programming. They did not know how to format a REST request as a URL, or the methods that could be used when sending the requests to be processed. Even worse, they did not know that REST used URLs, or that there were different request types in URL. Most could not tell me what the server was, or how it worked. Even fewer could tell me the different types of servers (e.g. Rails type, Sinatra type, EJB, etc), or what types of services they offered. They did not know how to access the server through a simple HTML api such as Postman. Many did not know HTML, and a lot of those who knew something about HTML knew little beyond how to format text on a web page. There was very little JavaScript knowledge in the class, and most had not even heard of libraries such as JQuery, Vue, or Bootstrap. These were all junior and senior computer science students, and the types of positions many of them were interviewing for would require this type of knowledge. Yes, they could learn it on the job. And I know this is not the foundational skills that many CS faculty believe students should learn. But there is a lot of good foundational material to be found in Web Programming, and I have had a lot of good feedback from students who have graduated or done an internship where they state even if they do not use all of this material, it is nice to be able to understand what others in the company are talking about. Because of the experience with the REST interface, I petitioned the CS department of one of the schools I was an adjunct at to offer a class in Web Programming. This book is the result of having taught that class 3 times at 3 different schools. Its purpose is to provide an overview of how to program for the web. It is still largely client side, but that is something I hope to address in a future version of the textbook This material in this textbook is ubiquitous in industry, and I really believe that there is utility in being able to communicate with others about the concepts without having 5-10 years’ experience seeing all of the various pieces of a full stack application for the Web. The book is written to try to be as technology agnostic as possible, trying to emphasize concepts over implementations. This book is also designed to help students understand how to use Web Programming with interfaces and libraries such as Open Layers, which is a mapping interface that can be run on a Web Browser client. This book can be used as the main text for a class in Web Programming. It is not intended to be used as the only source of material in such a class, but as the guide to the class. Most of the material can be easily supplemented by information on the Web.https://cupola.gettysburg.edu/oer/1004/thumbnail.jp
    corecore